package edu.javeriana.aes.psw.forwarder;

import edu.javeriana.aes.psw.mensaje.Mensaje;
import edu.javeriana.aes.psw.util.NetworkUtil;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class UDPForwarder implements Forwarder {

    @Override
    public void enviar(Mensaje mensaje) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);

        dos.writeDouble(mensaje.getTemperatura());
        dos.writeLong(mensaje.getTimestamp());
        dos.writeInt(mensaje.getFrecuencia());
        dos.writeBytes(NetworkUtil.obtenerIP());
        dos.writeBytes(mensaje.getAlias());

        DatagramPacket packet = new DatagramPacket(
                baos.toByteArray(),
                baos.toByteArray().length,
                InetAddress.getByName("255.255.255.255"),
                8090);

        MulticastSocket socket = new MulticastSocket();
        socket.send(packet);
        socket.close();
    }
}
